Cloud Dataflow
https://gyazo.com/2dc2d92f8d41c5362aebdaee970891ff
概要
2つのパイプラインでデータを共有する機能はない→異なるパイプラインでデータを共有したい場合はGCSなどを使用する
apache beamのランタイム
hiroki.icondigdagはSQLをオーケストレーションするのには良いけど、python処理をオーケストレーションするのはまぁ普通って感じ。SQL以外のデータ処理パイプラインを記述するのにはかなり気に入ったかも。
サーバレス+Beamの本質的な記述力
良いところ
ストリーミング処理
サーバレス
ジョブグラフ、実行の詳細が分かりやすく提供されている
Window
ストリーミング処理と合わせて
window処理を使ってイベントのどの部分を集計するのか範囲を制御できる
固定ウィンドウ
一時間毎で集計するとか
https://gyazo.com/bb7a71df0b6ca263795509af1ab45fbc
スライディングウィンドウ
WEBサイトで10分ごとに1時間ごとの平均人数を集計し、集計結果から移動平均人数を計算したい場合など
集計期間であるウィンドウ幅、ピリオド
セッションウィンドウ
時間だけでなく、Key単位でトラッキング
最小ギャップ時間を設定すると、最小ギャップ時間移行に到着したデータは別ウィンドウとして処理される
ユーザの行動に基づくアクションを集計したい場合など
WEBサイトで1時間に渡ってユーザーのインタラクションがない際に対象のユーザにPUSH通知を出したい場合→ギャップ期間が60分のセッションウィンドウを使う
https://gyazo.com/2d96ba7a60f208945dc80945595ae1de
実行してみる
pip install 'apache-beam[gcp]'
ローカル
code:shell
python -m apache_beam.examples.wordcount \
--output outputs
Dataflow
code:shell
python -m apache_beam.examples.wordcount \
--region DATAFLOW_REGION \
--input gs://dataflow-samples/shakespeare/kinglear.txt \
--output gs://STORAGE_BUCKET/results/outputs \
--runner DataflowRunner \
--project PROJECT_ID \
--temp_location gs://STORAGE_BUCKET/tmp/
hiroki.iconめっちゃ簡単に実行できる!!
Dataflow Notebookで開発